#include <stdio.h>
#include <string.h>
#include <assert.h>
//char* strtok(char* str, const char* sep)
//sep参数指向⼀个字符串，定义了⽤作分隔符的字符集合
//第⼀个参数指定⼀个字符串，它包含了0个或者多个由sep字符串中⼀个或者多个分隔符分割的标记。
//strtok函数找到str中的下⼀个标记，并将其⽤ \0 结尾，返回⼀个指向这个标记的指针。（注：
//strtok函数会改变被操作的字符串，所以在使⽤strtok函数切分的字符串⼀般都是临时拷⻉的内容
//并且可修改。）
//strtok函数的第⼀个参数不为 NULL ，函数将找到str中第⼀个标记，strtok函数将保存它在字符串
//中的位置。
//strtok函数的第⼀个参数为 NULL ，函数将在同⼀个字符串中被保存的位置开始，查找下⼀个标
//记。
//如果字符串中不存在更多的标记，则返回 NULL 指针。

//切割字符串

char* my_strtok(char* str, const char* sep)
{
    assert(sep);
    static char* tmp = NULL;
    if(str == NULL && tmp == NULL)
    return NULL;
    if(str == NULL)
    str = tmp + 1;
    char* ret = str;
    for(int i = 0; str[i] != '\0'; i++)
    {
        for(int j = 0; sep[j] != '\0'; j++)
        {
            if(str[i] == sep[j])
            {
                str[i] = '\0';
                tmp = str + i;
                return ret;
            }
        }
    }
    tmp = NULL;
    return ret;
}

int main()
{
    const char* sep = "@.";
    char email[] = "zhangpengwei@bitejiuyeke.com";
    char cp[30] = {0};
    strcpy(cp, email);
    char* ret = my_strtok(cp, sep);
    if(ret != NULL)
    printf("%s\n", ret);
    ret = my_strtok(NULL, sep);
    if(ret != NULL)
    printf("%s\n", ret);
    ret = my_strtok(NULL, sep);
    if(ret != NULL)
    printf("%s\n", ret);
    ret = my_strtok(NULL, sep);
    if(ret == NULL)
    printf("NULL\n");
    //char* ret = NULL;
    //for(ret = my_strtok(cp, sep); ret != NULL; ret = strtok(NULL, sep))
    //{
    //    printf("%s\n", ret);
    //}

    return 0;
}